package Day024_枚举_正则表达式.demo2_方法引用;

import java.util.ArrayList;

/**
 * @author zhangyan
 * @date 2020/5/18 10:32
 */
public class Test3_对象成员方法引用格式 {
    public static void main(String[] args) {
        //1. 对象成员方法引用:成员方法带参数
        //格式 : 对象名::方法名

        //创建集合
        ArrayList<String> list = new ArrayList<>();
        list.add("迪丽热巴");
        list.add("古力娜扎");
        list.add("马尔扎哈");
        list.add("泷泽萝拉");

        //需求:把集合中的元素转换Person对象,打印输出
        list.stream().map(Person::new).forEach((Person p)->{ System.out.println(p); });

        //以上代码 forEach方法传入的Lambda表达式 ,表达式就是调用了PrintStream对象的println方法
        //System.out.println(p);
        //PrintStream out = System.out;
        //out.println(p);

        list.stream().map(Person::new).forEach(System.out::println);
//------------------------------------------------------------------------------------------
        //2. 对象成员方法引用:成员方法无参
        //格式 : 类名::方法名

        //需求:把集合中的元素转换元素长度,打印输出
        list.stream().map((String name)->{return name.length();}).forEach(System.out::println);

        //以上代码 map方法传入的Lambda表达式 ,表达式中{}中的代码就是调用String类的length成员方法

        list.stream().map(String::length).forEach(System.out::println);
    }
}
